<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    /**
     * async 关键字修饰函数表示异步函数
     * 会返回一个promise对象，用then方法来获取返回的值
     * 如果内部有错误，promise对象有catch方法来捕获
     * */

    function doubleNumber(number) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve(2 * number)
            }, 2000);
        })
    }

    async function testResult() {
       let t1 = new Date().getTime();
        let first = await doubleNumber(10);
        let second = await doubleNumber(20);
        let third = await doubleNumber(30);
        let t2 = new Date().getTime();
        console.log('等待',(t2 - t1)/1000,'秒后的结果是',first + second + third)
    }

    testResult()

    /**
     * async 和 await 基于 promise 的。 使用 async 的函数将会始终返回一个 promise 对象。 这一点很重要，要记住，这可能是你遇到的容易犯错的地。
     * 在使用 await 的时候我们暂停了函数，而非整段代码。
     * async 和 await 是非阻塞的。
     * 你仍然可以使用 Promise 例如 Promise.all()。
     */
</script>
</body>
</html>
